$(function () {
    Join.init();
});

var Join = {
    init: function()
    {
        // 이메일 입력 시 기본 값 세팅
        if ($('#user_email').attr('id') == 'user_email') {
            $('#user_email').keydown(function() {
                $('#check_email').attr('value', 'n');
            });
        }
    },
    
    act: function()
    {
        var options = {
            target: '#form_output',
            url: '/cont/?c=join&m=act',
            dataType: 'json',
            beforeSubmit: Join.reqAct,
            success: Join.resAct
        };
        
        $('#regForm').ajaxSubmit(options);
        
        return false;
    },
    
    reqAct: function(formData, jqForm, options)
    {
        var aValid = [
              ['이메일', 'email', 'user_email', 0, 80]
              , ['비밀번호', 'eng_all_num', 'user_pass', 6, 20]
              , ['비밀번호 확인', 'eng_all_num', 'user_pass_check', 6, 20]
              , ['닉네임', 'ko_eng_all_num', 'user_nick', 2, 20]
              , [':년', 'empty', 'b_year']
              , [':월', 'empty', 'b_month']
              , [':일', 'empty', 'b_day']
              , ['대표이미지', 'empty', 'filename']
          ];
        
        var _check = FormValidation.checked(aValid);
        if (!_check) {
            return false;
        }
        
        // 중복확인
        if ($('#check_email').val() != 'y') {
            //alert('이메일 중복 확인을 해주세요.');
            Base.messageIn('이메일 중복 확인을 해주세요.', 'error');
            return false;
        }
        
        // 비밀번호가 정확한지 확인
        if ($('#user_pass').val() != $('#user_pass_check').val()) {
            Base.messageIn('비밀번호가 정확하지 않습니다.', 'error');
            return false;
        }
        
        if ($(':input[name=user_gender]:checked').val() == undefined) {
            Base.messageIn('성별을 선택해 주세요.', 'error');
            return false;
        }
        
        // 관심역1, 2 선택
        if (!$('#city1').val() || !$('#line1').val() || !$('#station1').val()) {
            Base.messageIn('[관심역1]이 선택되지 않았습니다.', 'error');
            return false;
        }
        if (!$('#city2').val() || !$('#line2').val() || !$('#station2').val()) {
            Base.messageIn('[관심역2]가 선택되지 않았습니다.', 'error');
            return false;
        }
        
        Base.showSpin();
        
        return true;
    },
    
    resAct: function(responseText, statusText, xhr, $form)
    {
        Base.hideSpin();
        
        if (responseText.code == 200) {
            alert('정상적으로 처리되었습니다.');
            window.location.href = '/';
            return false;
            
        } else {
            alert('잘못되었습니다. 새로고침 후 다시 시도해 주세요. : '+responseText.code);
            return false;
        }
    },
    
    /**
     * 이메일 중복 검사
     */
    checkEmail: function()
    {
        if (!$('#user_email').val()) {
            //alert('이메일이 입력되지 않았습니다.');
            Base.messageIn('[이메일]이 입력되지 않았습니다.', 'error');
            $('#user_email').focus();
            return false;
        }
        
        var params = 'c=join&m=checkEmail&user_email='+encodeURI($('#user_email').val());

        $.ajax({
            type: 'POST',
            url: '/cont/',
            dataType: 'json',
            data: params,
            success:function(data) {
                if (data.code == 200) {
                    //alert('정상적으로 처리되었습니다.');
                    Base.messageIn('사용가능한 [이메일] 입니다.', 'ok');
                    $('#check_email').attr('value', 'y');
                    
                } else {
                    //alert('오류가 있습니다. 담당자에게 문의 하시기 바랍니다. [ code : '+data.code+']');
                    Base.messageIn('이미 사용중인 [이메일] 입니다.', 'error');
                    $('#check_email').attr('value', 'n');
                }
            }
        });
    },
    
    /**
     * :호선 리스트
     */
    getLineList: function(elId, setElId)
    {
        var iCityNo = $('#'+elId).val();
        if (iCityNo == undefined) {
            Base.messageIn('[:도시]가 선택되지 않았습니다.', 'error');
            return false;
        }
        
        var params = 'c=join&m=getLineList&city_no='+iCityNo;

        $.ajax({
            type: 'POST',
            url: '/cont/',
            dataType: 'json',
            data: params,
            success:function(data) {
                if (data.code == 200) {
                    // 초기화
                    eval(setElId).options.length = 1;
                    
                    var aLine = data.return_value;
                    var aHtml = new Array();
                    for (var i=0, iLen = aLine.length; i < iLen; i++) {
                        aHtml.push('<option value="'+aLine[i]['line_no']+'">'+aLine[i]['line']+'</option>');
                    }
                    var sHtml = aHtml.join('');
                    $('#'+setElId).append(sHtml);
                    
                } else {
                    //alert('오류가 있습니다. 담당자에게 문의 하시기 바랍니다. [ code : '+data.code+']');
                    Base.messageIn('해당 지역의 [호선]이 존재 하지 않습니다.', 'error');
                }
            }
        });
    },
    
    /**
     * :역 리스트
     */
    getStationList: function(pElId, elId, setElId)
    {
        var iCityNo = $('#'+pElId).val();
        if (iCityNo == undefined) {
            Base.messageIn('[:도시]가 선택되지 않았습니다.', 'error');
            return false;
        }
        
        var iLineNo = $('#'+elId).val();
        if (!iLineNo) {
            Base.messageIn('[:호선]이 선택되지 않았습니다.', 'error');
            return false;
        }
        
        var params = 'c=join&m=getStationList&city_no='+iCityNo+'&line_no='+iLineNo;

        $.ajax({
            type: 'POST',
            url: '/cont/',
            dataType: 'json',
            data: params,
            success:function(data) {
                if (data.code == 200) {
                    // 초기화
                    eval(setElId).options.length = 1;
                    
                    var aStation = data.return_value;
                    var aHtml = new Array();
                    for (var i=0, iLen = aStation.length; i < iLen; i++) {
                        aHtml.push('<option value="'+aStation[i]['station_no']+'">'+aStation[i]['station']+'</option>');
                    }
                    var sHtml = aHtml.join('');
                    $('#'+setElId).append(sHtml);
                    
                } else {
                    //alert('오류가 있습니다. 담당자에게 문의 하시기 바랍니다. [ code : '+data.code+']');
                    Base.messageIn('해당 지역의 [호선]이 존재 하지 않습니다.', 'error');
                }
            }
        });
    }
    
};